home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 April / CHIP 1996 aprilis (CD06).zip / CHIP_CD06.ISO / hypertxt.arj / 9410 / PGP.CD < prev    next >
Text File  |  1994-11-23  |  18KB  |  295 lines

  1.           @VPretty Good Privacy@N
  2.  
  3.           @VSzigorúan bizalmas!@N
  4.  
  5.           Az    adatbiztonság   központi   kérdés   minden   gazdasági
  6.           szervezetnél.  Az  adatbiztonságnak  pedig  szerves része az
  7.           adattitkosság és adattitkosítás.
  8.  
  9.  
  10.  
  11.           Napjaink  kulcsfontosságú  témája  az adat- és vírusvédelem.
  12.           De  vajon  megteszünk-e  mindent  adataink védelmére? Nos, a
  13.           legtöbb  helyen drága szoftvereket és hardvereket használnak
  14.           erre  a  célra,  otthon  pedig  valamilyen jelszóvédelmet --
  15.           mondjuk   a   BIOS-ét.  Pedig  az  ilyen  megoldások  néhány
  16.           kivétellel  nem  nyújtanak igazi biztonságot (itt most nem a
  17.           szándékos károkozásra gondoltunk, hanem az adatlopásra).
  18.  
  19.           A  legtöbb  titkosító  módszerre  létezik visszafejtô. Ilyen
  20.           ""gyenge"  titkosítás  például  a  Egyesült Ållamok kormánya
  21.           által  favorizált  DES!  Egy  ilyen visszafejtést persze nem
  22.           nagyon  fogunk  otthon végrehajtani egy PC-n, de egy nagyobb
  23.           gépen  már viszonylag rövid idôn belül elkészülhetnénk vele.
  24.           És  pontosan  ezért  ajánlják  több  helyre  is.  Hiszen  --
  25.           maradjunk  kedvenc  példánknál,  a szabadság hazájánál -- az
  26.           USA-ban   rengeteg  nagygépet  alkalmaznak  ilyen  célra  az
  27.           állami   szervezetek.   Például   az  NSA,  amely  figyel  a
  28.           telefonvonalaktól  kezdve  a  rádióadásokon át a hálózatokig
  29.           mindent,  amit  tud, és gyûjti az adatokat. (Az, hogy kinek,
  30.           még  nem  egészen tisztázott... -- legalábbis a nyilvánosság
  31.           számára.)  Éppen  ez  munkájuk  lényege.  Ugyanis ha egy DES
  32.           kódot  --  vagy  jelszót  --  valakinek el akarunk juttatni,
  33.           akkor  óhatatlanul  igénybe  kell vennünk a telekommunikáció
  34.           egyik  formáját  --  és  a  titkos  kulcsunk  máris  az  NSA
  35.           archívumának  részévé válik, megóvva a nagygépeket a túlzott
  36.           számolási  munkától.  Åm, ez csak egy apró fricska lenne, de
  37.           a java még hátra van.
  38.  
  39.           Az   Egyesült   Ållamokban   elfogadták   a   Clipper   chip
  40.           használatát.  Ez  az  egyszerû kis játékszer kódolásra való.
  41.           Ilyeneket     használnának     a     különbözô    biztonsági
  42.           berendezésekben,    például    a   telefonokban.   A   dolog
  43.           ""érdekessége",  hogy  az  állam  rendelkezik mindegyik chip
  44.           kulcsával   --   természetesen   kizárólag   állambiztonsági
  45.           okokból.  Meg  kell mondjuk ôszintén, minket mint szaksajtót
  46.           kevéssé    érintene,    ha    a    kormány   lehallgatná   a
  47.           beszélgetéseinket,   hiszen  teljesen  politikamentesek.  De
  48.           nincs  biztosítva, hogy becsukják a fülüket akkor is, amikor
  49.           éppen   szakmai   titkokról,   például  a  Virkill  legújabb
  50.           vírusdetektálási    módszerérôl   beszélgetünk.   És   semmi
  51.           biztosítékunk  nincs  arra,  hogy  nem használják fel az így
  52.           szerzett   információkat.  Ez  (a  ""Virkill  lehallgatása")
  53.           aligha  okozna  gondot,  de a politikai és gazdasági vezetôk
  54.           beszélgetéseinek  visszafejtése  éppúgy  könnyû  lenne...  A
  55.           Clippert   egyébként  nemcsak  az  USA-ban,  hanem  sok  más
  56.           országban  is  be  kívánják vezetni -- például Hollandiában,
  57.           amely állam szintén a szabadságáról híres.
  58.  
  59.           Åm   túl   messzire  kalandoztunk.  Térjünk  vissza  eredeti
  60.           témánkhoz!  Már  a DES kapcsán felmerült egy probléma, amire
  61.           logikus   és   egyszerû  megoldást  lehet  találni.  Elôször
  62.           azonban    tisztázzuk,   hogyan   történik   a   titkosítás.
  63.           Szükségünk   van   valamire,  amit  titkosítunk,  valamilyen
  64.           titkosító   eljárásra,   valamint   egy  jelszóra.  Ezzel  a
  65.           jelszóval  mondjuk  el-XOR-oljuk  a  file-t,  és  a  jelszót
  66.           eljuttatjuk  a  címzettnek a file-lal együtt. A késôbbiekben
  67.           már  csak  a  titkosított  file-t  kell  küldeni, tehát elég
  68.           egyszer  használni  egy  nagy megbízhatóságú csatornát. Igen
  69.           ám,    de    legtöbbször    nem   áll   rendelkezésre   nagy
  70.           megbízhatóságú   csatorna  --  ilyenkor  illik  paranoiásnak
  71.           lenni.  Ezen  a  tényen  az sem változtat, ha nem XOR-olunk,
  72.           hanem  egy  jóval  bonyolultabb  kódolást  végzünk, hiszen a
  73.           kulcs  így  is  elveszhet, ergo megközelítôleg ugyanakkora a
  74.           kockázat.
  75.  
  76.           A  megoldás  a  kétkulcsos  rendszerekben  rejlik.  Az egyik
  77.           rejtjelkulccsal  kódoljuk  a  szöveget,  majd  egy  másikkal
  78.           dekódoljuk.  A  kulcsok közül az egyiket elküldjük, és máris
  79.           kezdôdhet  a  kommunikáció.  Az  általunk elküldött kulccsal
  80.           kódolt  dolgokat  csak  a  mi kulcsunk fogja nyitni. Ezért a
  81.           küldendô   kulcsot   akár   egy   nyílt   levelezôlapon   is
  82.           küldhetjük,  a  neve is ""public key", azaz nyilvános kulcs.
  83.           Ha  ez  valakinek  a  kezébe került, nem tud vele semmit sem
  84.           csinálni,  természetesen  azon kívül, hogy készít nekünk egy
  85.           levelet, amit csak mi tudunk elolvasni.
  86.  
  87.           Ma  már  több  ilyen  rendszer  létezik.  A legklasszikusabb
  88.           talán    az    RSA    (Rivest-Shamir-Adleman)   kódolás,   a
  89.           legelterjedtebb  viszont  kétségkívül  a  PGP, a Pretty Good
  90.           Privacy  (Egészen  Jó  Magánélet).  Az  eljárást  eredetileg
  91.           Philip  Zimmermann  fejlesztette ki, majd adta közre program
  92.           formájában.  A  program  freeware, bár az amerikai törvények
  93.           értelmében  nem  vihetô  ki  az országból, tehát igyekezzünk
  94.           egy  nem amerikai forrásból beszerezni, hogy ne kövessünk el
  95.           törvénysértést.
  96.  
  97.           Ebben  a pillanatban az általunk ismert legfrissebb verzió a
  98.           2.6,  ezen  keresztül  fejtjük  ki (stb.), hogy mit is lehet
  99.           egy ilyen programmal csinálni.
  100.  
  101.           A  legfontosabb  mindenképpen  az  üzenetek  titkosítása. De
  102.           mielôtt   ezt   megtehetnénk,  el  kell  készítenünk  saját,
  103.           illetve  a  publikus  kulcsunkat.  Elôször is állítsuk be az
  104.           idôzónára jellemzô környezeti változót:
  105.  
  106.           @KSET TZ=MET-1DST@N majd adjuk ki a @Kpgp -kg@N parancsot.
  107.  
  108.           A  kulcs  hatásfoka  érdekében  az  1024  bitet válasszuk --
  109.           végtére  is  ha  már  dolgozunk, csináljuk lelkiismeretesen.
  110.           Az  user  ID-nek  adjuk  meg  azt  a nevet amit a levelekben
  111.           használni  akarunk,  illetve ha van e-Mail címünk, akkor azt
  112.           is,   <>   jelek  közé  zárva.  A  jelszó  a  kulcs  további
  113.           eléréséhez  kell  majd  -- tehát a kulcs ettôl független, de
  114.           hogy   el   ne   lophassák   munka  után  a  géprôl,  még  a
  115.           jelszavunkkal  kódoljuk  is.  Jelszónak érdemes valami olyan
  116.           dolgot  választani, ami elsôre eszünkbe jut a programról, és
  117.           nem  annyira  kézenfekvô,  hogy  más is kitalálja. Ezek után
  118.           már  csak  a  véletlenszám-generálásba kell besegítenünk egy
  119.           kis billentyûnyomogatással.
  120.  
  121.           Ezek  után  szükségünk lesz a címzett publikus kulcsára. Ezt
  122.           egy file-ban kaphatjuk meg tôle. Ha kiadjuk a
  123.  
  124.           @Kpgp -ka <filenév>@N
  125.  
  126.           parancsot,  akkor  máris  elraktároztuk  a  kulcsát  késôbbi
  127.           felhasználásra. Mi a
  128.  
  129.           @Kpgp -kx <filenév>@N
  130.  
  131.           paranccsal  készíthetjük  el  a  publikus  kulcsunk file-ban
  132.           elküldhetô   változatát  (a  <filenév>  címû  file-ba  fogja
  133.           kirakni).
  134.  
  135.           Titkosításhoz a
  136.  
  137.           @Kpgp -e <filenév> <userid>@N
  138.  
  139.           parancsot  adjuk  ki  -- ez a <filenév> nevû file-t fogja az
  140.           <userid>  nevû  ember  kulcsával  titkosítani.  Egymás  után
  141.           több   ID-t   is  megadhatunk,  ilyenkor  mindenkinek  külön
  142.           legyártja a saját kulcsával az üzenetet.
  143.  
  144.           Ha mi kapunk üzenetet, akkor azt a
  145.  
  146.           @Kpgp <filenév> -o <kifile>@N
  147.  
  148.           utasítással   olvashatjuk   el.   A   <filenév>   a   kapott
  149.           tikosított  file,  a <kifile> pedig a kibontott file lesz. A
  150.           kibontott  file-t használat után semmisítsük meg -- nem elég
  151.           törölni,  használjuk a WIPEFILE-t (Norton Utilities, 4.5-ig)
  152.           WIPEINFO-ot  (Norton  Utilities,  6.0  felett)  vagy  valami
  153.           hasonló segédprogramot!
  154.  
  155.           Lehetôség  van arra is, hogy egy szöveget -- vagy adatfile-t
  156.           --   ne   titkosítsunk,   csak   szignáljuk,  azaz  jelezzük
  157.           valódiságát.  Ez  egyfajta  CRC-t  képez  a  szövegbôl  és a
  158.           kulcsból. Ezt a
  159.  
  160.           @Kpgp -s <filenév>@N
  161.  
  162.           paranccsal tehetjük meg. Ilyenkor az ellenállomás a
  163.  
  164.           @Kpgp <filenév>@N
  165.  
  166.           paranccsal  tudja  megnézni, hogy valaki nem piszkált-e bele
  167.           levelünkbe.
  168.  
  169.           Ezeken  kívül  még  számtalan  funkciót  nyújt  a program. A
  170.           kezelés  megkönnyítésére  több  shell -- kezelô -- programot
  171.           is  készítettek, ezek közül a PGPShell a legismertebb. Ebben
  172.           egyszerû  menübôl tudjuk elvégezni a mindennapi használathoz
  173.           szükséges  mûveleteket.  A  programhoz  egyébként  a  teljes
  174.           forrást  be  lehet szerezni, amely PGP26SRC.ZIP néven kering
  175.           közkézen (a szerzô tudtával).
  176.  
  177.           Zárszóként  talán  annyit,  hogy  senki  ne  higgye,  hogy a
  178.           szerkesztôség    tagjai    üldözési   mániában   szenvednek,
  179.           mindössze   az   adatok   biztonságát  és  az  adatbiztonság
  180.           szabadságát  akarják  segíteni  most  és a jövôben. Már most
  181.           érdemes  elkezdeni  használni  a programot, hogy megszokássá
  182.           váljon,  és  akkor  már  túl nagy visszhangot váltana ki, ha
  183.           egy szervezet be akarná tiltani a PGP-t...
  184.  
  185.           @KLencsés Gábor@N
  186.  
  187.  
  188.           ┌──────────────────────────────────────────────────────────┐
  189.           │                         @VAz elmélet@N                       │▒
  190.           │                                                          │▒
  191.           │ A  kódolás  alapgondolata  az,  hogy  jelenlegi tudásunk │▒
  192.           │ alapján  egy  igen   nagy  számról  polinom   lépésszámú │▒
  193.           │ algoritmussal el  lehet dönteni,  hogy prím-e,  de ez az │▒
  194.           │ algoritmus  nem  alkalmas  arra,  hogy  megtalálja   egy │▒
  195.           │ nem-prím  szám  prímtényezôs  felbontását.   Erre   csak │▒
  196.           │ exponenciális lépésszámú  algoritmus létezik  (ami 2-300 │▒
  197.           │ jegyû számnál még a legjobb számítógépeken is több  évig │▒
  198.           │ elfuthat, míg végez).                                    │▒
  199.           │                                                          │▒
  200.           │ Tehát könnyen lehet találni két darab néhány száz  jegyû │▒
  201.           │ prímszámot  (1-2  perc  egy  386-oson),  de  ha   ezeket │▒
  202.           │ összeszorozzuk,  nagyon  kicsi  az  esély,  hogy  valaki │▒
  203.           │ kitalálja,  melyik  két  szám  szorzatával  áll szemben. │▒
  204.           │ (Lásd  még   a  számelmélet   alaptételét:    egy   szám │▒
  205.           │ egyértelmûen bontható  fel prímtényezôk  szorzatára...). │▒
  206.           │ Tehát  már  az  is  jó  védelmet  nyújtana,  ha a bankba │▒
  207.           │ betett  pénzt  csak  annak  adnák  ki,  aki  a   banknak │▒
  208.           │ meghagyott  szám   egy  osztóját   meg  tudja   mondani. │▒
  209.           │ Feltéve, ha  nem hagyjuk  benn a  pénzt több  száz évre, │▒
  210.           │ hiszen ennyi idô alatt esetleg ki tudják találni a  bank │▒
  211.           │ alkalmazottai a kódot.  A módszer hátránya, hogy  miután │▒
  212.           │ megmondtuk  a  kódot,  újat  kell  választani,  hiszen a │▒
  213.           │ pénztáros gondosan feljegyezheti a titkos számot.        │▒
  214.           │                                                          │▒
  215.           │ Némi matek:                                              │▒
  216.           │                                                          │▒
  217.           │ @Kx === y (mod n)@N                                          │▒
  218.           │                                                          │▒
  219.           │ (olvasd:    @Kx@N    kongruens   @Ky@N-nal    modulo    @Kn@N)   azt │▒
  220.           │ jelenti,   hogy    @Kx@N-nek   és    @Ky@N-nak   ugyanannyi    a │▒
  221.           │ maradéka,  ha  elosztjuk  ôket  @Kn@N-nel.  Például  11===21 │▒
  222.           │ (mod 5) igaz.                                            │▒
  223.           │                                                          │▒
  224.           │ @Kfi (m)@N                                                   │▒
  225.           │                                                          │▒
  226.           │ az  @K1..m-1@N  számok   közül  az  @Km@N-hez   relatív   prímek │▒
  227.           │ száma.    Ha   @Km@N   prím,  akkor   @Kfi(m)@N   értelemszerûen │▒
  228.           │ @Km-1@N, ha pedig @Km@N két prím (@Kp@N és @Kq@N) szorzata, akkor        │▒
  229.           │                                                          │▒
  230.           │ @Kfi(m)=(p-1)(q-1)@N                                         │▒
  231.           │                                                          │▒
  232.           │ Bebizonyítható, hogy                                     │▒
  233.           │                                                          │▒
  234.           │ @Kx^(fi(m))===1 (mod m)@N                                    │▒
  235.           │                                                          │▒
  236.           │ ha @Kx@N és @Km@N relatív prímek.                                │▒
  237.           │                                                          │▒
  238.           │ Szóval az  algoritmus (ez  nem pontosan  az, amit  a PGP │▒
  239.           │ használ, hanem csak a leegyszerûsített alapgondolat):    │▒
  240.           │                                                          │▒
  241.           │ Tekintsük  az  üzenetet  úgy,  mint  (például) 200 jegyû │▒
  242.           │ számok sorozatát (a csonka blokkot 0-kal kitöltve --  ha │▒
  243.           │ a file hossza nem osztható 200-al).  Elô lehet  állítani │▒
  244.           │ egy kódolófüggvényt, amit bárkivel közölni lehet,  mivel │▒
  245.           │ csak kódolásra alkalmas, dekódolni ez alapján nem  lehet │▒
  246.           │ az üzeneteket.   Egyúttal lehet  készíteni egy  dekódoló │▒
  247.           │ függvényt is,  amit viszont  célszerû titokban  tartani. │▒
  248.           │ Ezután  értelemszerûen  ha  valaki  küld  nekem valamit, │▒
  249.           │ kódolja az üzenetet a nyilvános kódolófüggvényemmel,  én │▒
  250.           │ pedig dekódolom azt az én titkos függvényemmel.          │▒
  251.           │                                                          │▒
  252.           │ E függvények elôállítása:                                │▒
  253.           │                                                          │▒
  254.           │ Válasszunk  két   darab  100   jegyû  prímszámot   ízlés │▒
  255.           │ szerint; ezek legyenek @Kp@N, illetve @Kq@N.                     │▒
  256.           │                                                          │▒
  257.           │ @Kn = p*q@N @K@N @Km = fi(n) = (p-1)(q-1)@N                          │▒
  258.           │                                                          │▒
  259.           │ Válasszunk   ki  tetszôlegesen   egy   olyan  @Ke@N  számot, │▒
  260.           │ amire teljesülnek a következôk:                          │▒
  261.           │                                                          │▒
  262.           │ @K1 <= e <= n@N                                              │▒
  263.           │                                                          │▒
  264.           │ és                                                       │▒
  265.           │                                                          │▒
  266.           │ @Ke@N    relatív    prím   legyen    @K(p-1)@N-hez   és @K(q-1)@N-hez│▒
  267.           │                                                          │▒
  268.           │ Oldjuk meg az                                            │▒
  269.           │                                                          │▒
  270.           │ @Ke*d === 1 (mod m)@N                                        │▒
  271.           │                                                          │▒
  272.           │ kongruenciát.   Ebbôl  kapunk  egy  @Kd@N   számot.   Hozzuk │▒
  273.           │ nyilvánosságra  az  @Kn@N  és  @Ke@N  számokat, a többit tartsuk │▒
  274.           │ titokban.  Ezután  a  kódoló  függvény a  következô (így │▒
  275.           │ kapjuk meg @Ky@N-t):                                         │▒
  276.           │                                                          │▒
  277.           │ @Ky === x^e (mod n)@N                                        │▒
  278.           │                                                          │▒
  279.           │ ahol az @Kx@N a kódolandó blokk. A dekódolófüggvény:         │▒
  280.           │                                                          │▒
  281.           │ @Kx === y^d (mod n)@N                                        │▒
  282.           │                                                          │▒
  283.           │ mivel:                                                   │▒
  284.           │                                                          │▒
  285.           │ @Ky^d===x^(e*d)=x^(k*m+1)=(x^(fi(n)))^h*x===x (mod n)@N      │▒
  286.           │                                                          │▒
  287.           │ Az  @Kx@N-nek   relatív  prímnek  kell  lennie  @Kn@N-hez,   így │▒
  288.           │ 199  hosszú  blokkokat  kell  készíteni,  és  az  utolsó │▒
  289.           │ elemeket  ""kézileg"  jóra  kell  csinálni.   (Åltalános │▒
  290.           │ esetben   100    helyére   helyettesítsünk    @Kdzs@N-t   és │▒
  291.           │ @Kdz@N-t, 200 helyére @Kdzs*dz@N-t, 199 helyére @Kdzs*dz-1@N-et.     │▒
  292.           │                                                          │▒
  293.           │ @KFalcon@N                                                   │▒
  294.           └──────────────────────────────────────────────────────────┘▒
  295.            ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒